home *** CD-ROM | disk | FTP | other *** search
- {----------------------------------------------------------------------------}
- var
- Help_Text : array [1..100] of string;
-
- const
- Cur_Help_Line_No : integer = 1;
- Help_Text_Ct : integer = 15;
-
- const
- Help_Menu_Msg : string =
- '|(esc)@ -exit help menu |'#24'@ -up |'#25'@ -down';
-
- {----------------------------------------------------------------------------}
- procedure Load_Help_Text (FileName:string);
- label Out;
- var
- i : integer;
- In_File : text;
-
- begin
- fillchar(Help_Text, sizeof(Help_Text), #0);
- {$I-}
- assign(In_File, FileName);
- reset(In_File);
- {$I+}
- if (IOResult <> 0) then begin
- Msg_Line( 25, '^System Error - Missing Help Text File: "'+FileName+'"' );
- goto Out;
- end;
-
- {Get Data from Input File:}
- Help_Text_Ct := 0;
- repeat
- Help_Text_Ct := Help_Text_Ct + 1;
- readln(In_File, Help_Text[Help_Text_Ct]);
- until (eof(In_File) = TRUE) or (Help_Text_Ct >= 100);
-
- close(In_File);
- Out:
- end; {Load_Help_Text}
-
- {----------------------------------------------------------------------------}
- procedure Help_Write(Msg:string);
- var
- i : integer;
- c : char;
- begin
- Med_Video;
- for i := 1 to length(Msg) do begin
- c := Msg[i];
- case c of
- '^': High_Video;
- '|': Rev_Video;
- '@': Med_Video;
- else write(c);
- end; {end case}
- end;
- end; {Help_Write}
-
- {----------------------------------------------------------------------------}
- procedure Help_Menu(X,Y:integer; FileName,HelpHdrStr:string);
- var
- i,j : integer;
- InChar : char;
- Exit_Sw : integer;
- begin
- Load_Help_Text(FileName);
- Msg_Line( 25, Help_Menu_Msg );
- Draw_Window_Box (X,Y,60,10,'< '+HelpHdrStr+' >');
- Set_Window_Area(X,Y,62,13);
-
- for j := 1 to 10 do begin
- gotoXY(2,j+1); Help_Write(Help_Text[j]);
- end;
-
- Exit_Sw := 0;
- repeat
- InChar := GetKey;
-
- case InChar of
- #222: begin {up arrow}
- if (Cur_Help_Line_No > 1) then begin
- Set_Window_Area(X+1,Y+1,60,10);
- Cur_Help_Line_No := Cur_Help_Line_No - 1;
- gotoXY(1,1); insline; {create blank line at top}
- gotoXY(1,1); Help_Write(Help_Text[Cur_Help_Line_No]);
- end;
- end;
- #230: begin {down arrow} {create blank line at bottom}
- Set_Window_Area(X+1,Y+1,60,10);
- if (Cur_Help_Line_No <= Help_Text_Ct - 10) then begin
- Cur_Help_Line_No := Cur_Help_Line_No + 1;
- gotoXY(1,1); delline;
- gotoXY(1,10); Help_Write(Help_Text[Cur_Help_Line_No+9]);
- end;
- end;
- #27: begin
- Exit_Sw := 2;
- end;
- end; {end case}
- until (Exit_Sw > 0);
- end; {Help_System}
- {----------------------------------------------------------------------------}
-
-